Merged
Conversation
- track newly infected - disable hospital delays - hacked compliance to match the three day probabilities in Epicast - hacked hospitalization to only be checked on second day, like in Epicast - allow household transmission when individuals are hospitalized
fixed some debug warnings
…t probabilities for different age groups.
Added script for estimating gamma parameters
Allow splitting the output when reading the epicast events
Added a location parameter to the gamma distribution parameters.
…thon compare to epicast script to plot multiple random runs
Contributor
|
Could you merge or rebase with development? Some of these commits are already on there. I think the CI failure could be fixed by only changing the nborhood_size and workgroup_size for the UrbanPop initialization type. (I know the plan is to remove the Census data option and only use UrbanPop going forward, but I think would be a quick fix and we could merge this faster, then remove the census data option and change the CI tests to use UrbanPop in a separate PR.) |
atmyers
reviewed
Apr 8, 2026
atmyers
reviewed
Apr 8, 2026
Co-authored-by: Andrew Myers <atmyers2@gmail.com>
Co-authored-by: Andrew Myers <atmyers2@gmail.com>
… pass CI tests with ic_type census
Collaborator
Author
|
It's already merged with development. I've reset the nborhood_size and workgroup_size to the previous values. |
atmyers
approved these changes
Apr 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request:
compare-to-epicast→developmentSummary
This branch adds infrastructure and bug fixes to enable quantitative comparison of ExaEpi simulation outputs against Epicast reference data. It introduces a new Python script for parsing Epicast binary outputs, significantly enhances the comparison and parameter-fitting utilities, fixes several correctness bugs in the disease progression model, and improves the work-neighborhood interaction model.
Changes
New Features
utilities/read_epicast_events.py(new file)utilities/compare_to_epicast.py(major update)utilities/calc_epicast_trans_probs.py(major update)loc(location/shift) parameter to all gamma distributions for latent, infectious, incubation, and immune periods, enabling better fits to Epicast's discrete transition tables.Bug Fixes
src/AgentDefinitions.H— FixisNewlyPresymptomaticcountingisNewlySymptomatic/isNewlyAsymptomatic, causing a mismatch in aggregate counts.isNewlyPresymptomaticfires on the same step as the symptomatic/asymptomatic transition (disease_counter == incb_period), ensuringsum(NewP) == sum(NewS) + sum(NewA)over a complete run.src/AgentContainer.cpp&src/InitializeInfections.cpp— Passsymptomaticpointer tosetInfectedsetInfectednow receives the agent'ssymptomaticstatus pointer so it can be initialized correctly at infection time, fixing a missing initialization.src/InteractionModWorkNborhood.H— Fix work-neighborhood interaction modelnborhood_ptrwas declared twice).asymp_relative_infscaling consistently to both community-level and neighborhood-level asymptomatic contributions.src/DiseaseParm.H/src/DiseaseParm.cpp— Addlocparameter to gamma distributionsimmune_length_loc,infectious_length_loc,incubation_length_loc, andhospital_delay_length_locshift parameters to all gamma-distributed disease period samplers.pp.query(...).setInfectedto apply thelocoffset when sampling latent, infectious, incubation, and hospital delay periods.>to>=and adjusted the floor to- 1to avoid an off-by-one that could produce a zero-length infectious window.src/DiseaseStatus.H&src/HospitalModel.H— Applylocto immune period samplingimmune_length_locwhen drawing the immune period duration.Behavior / Configuration Changes
src/main.cpp#ifndef COMPARE_TO_EPICASTguard around the standard daily interaction sequence (morning commute, daytime interactions, evening commute, evening interactions). All interaction steps now run unconditionally, making theCOMPARE_TO_EPICASTbuild mode behave identically to the standard build for the interaction loop.CMakeLists.txtAMReX_TINY_PROFILE(wasON).GIT_SUBMODULES ""to the AMReXFetchContent_Declareto avoid fetching unnecessary submodules (fixes build issues in the devcontainer).add_compile_definitions(COMPARE_TO_EPICAST)line as a convenience toggle.src/InitializeInfections.cpp#warningpreprocessor directive that fired on everyCOMPARE_TO_EPICASTbuild.NTRYdefaults toNTRY+10(i.e., 10) when the Epicast comparison mode is not defined.Infrastructure / Housekeeping
requirements.txt: Addedscipyandmatplotlibas explicit dependencies (required by the comparison and fitting scripts)..gitignore: Added__pycache__to the root ignore list.data/.gitignore: Added ignore rules for large external datasets (EducationData,LODES7, census block group shapefiles,UrbanPopbinaries) while preserving the committed NM test fixtures.utilities/UrbanPop-scripts/plot_timeseries.py: Minor plotting fix for updated output format.utilities/custom-clang-format.py: Updated to handle additional edge cases in the clang-format wrapper script.Testing
COMPARE_TO_EPICASTdefined) is unaffected by the interaction-loop guard removal.isNewlyPresymptomaticfix can be verified by checking that aggregateNewP,NewS, andNewAcounts balance over a full simulation run.num_infected_community >= 0assertions no longer fire (the old code could produce negative values).Dependencies
scipyandmatplotlib(added torequirements.txt).